1
Fundamentos arquitectónicos del ecosistema HIP
AI022Lesson 3
00:00

El Ecosistema HIP está diseñado como una capa de abstracción ligera para garantizar la compatibilidad de código fuente entre las arquitecturas de AMD y NVIDIA. Utiliza el ROCm (Radeon Open Compute) pila, específicamente aprovechando el arquitectura de sistema heterogéneo (HSA) entorno de tiempo de ejecución y el controlador de fusión de kernels (KFD).

1. Inicialización inicial

La inicialización comienza con intercambios de mensajes de bajo nivel entre controladores de kernel mediante hsa_init(0, ...) y hsaKmtOpenKFD(...). Estas llamadas de establecimiento crean el puente de comunicación entre las aplicaciones en espacio de usuario y el hardware de GPU de AMD.

2. Descubrimiento de topología y propiedades

Antes de lanzar kernels, el entorno de tiempo de ejecución identifica las capacidades del hardware usando hsaKmtAcquireSystemProperties y hsaKmtGetNodeProperties. Mapea la memoria física a nodos de GPU usando hsaKmtMapMemoryToGPUNodes, asegurando la visibilidad de la tabla de páginas para el dispositivo.

3. El pipeline de compilación

El puente entre CUDA y HIP se basa en dos pilares: hipify-perl (transpilador basado en expresiones regulares) y hipcc (envoltorio de compilador).

# Ejemplo de flujo de portabilidad
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. Lógica de versiones

La compatibilidad se garantiza mediante una fórmula precisa para asegurar que hipRuntimeGetVersion coincida con las tablas de extensiones HSA:

$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$

Capa de aplicación (./square.out)Capa HIP (hipcc / API de tiempo de ejecución)Entorno de tiempo de ejecución HSA / Tablas de extensionesControlador de kernel (KFD) y hardware
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>